package cn.iocoder.yudao.module.product.service.skustorerelation;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.product.controller.admin.skustorerelation.vo.*;
import cn.iocoder.yudao.module.product.dal.dataobject.skustorerelation.SkuStoreRelationDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * sku与门店关系 Service 接口
 *
 * @author 芋道源码
 */
public interface SkuStoreRelationService {

    /**
     * 创建sku与门店关系
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    void createOrUpdateSkuStoreRelation(@Valid List<SkuStoreRelationSaveReqVO> createReqVO);

    /**
     * 更新sku与门店关系
     *
     * @param updateReqVO 更新信息
     */
    void updateSkuStoreRelation(@Valid SkuStoreRelationSaveReqVO updateReqVO);

    /**
     * 删除sku与门店关系
     *
     * @param id 编号
     */
    void deleteSkuStoreRelation(Long id);

    /**
     * 获得sku与门店关系
     *
     * @param id 编号
     * @return sku与门店关系
     */
    SkuStoreRelationDO getSkuStoreRelation(Long id);

    /**
     * 获得sku与门店关系分页
     *
     * @param pageReqVO 分页查询
     * @return sku与门店关系分页
     */
    PageResult<SkuStoreRelationPageReqVO> getSkuStoreRelationPage(SkuStoreRelationPageReqVO pageReqVO);

    /**
     * 批量创建sku与门店关系
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    void insertBatch(List<SkuStoreRelationSaveReqVO> createReqVO);

    /**
     * 批量跟新sku与门店关系
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    void updateBatch(List<SkuStoreRelationSaveReqVO> createReqVO);


    /**
     * 根据skuId查询门店关系数据
     * @param: skuId
     * @return: List<SkuStoreRelationDO>
     * @author xulimin
     * @date: 2023/12/27 10:56
     */
    List<SkuStoreRelationDO> getSkuStoreRelationBySkuId(Long skuId);

    /**
     *  查询商品和门店关系数据
     * @param: pageReqVO
     * @return: List<SkuStoreRelationDO>
     * @author xulimin
     * @date: 2023/12/28 9:45
     */
    List<SkuStoreRelationRespVO> getSkuStoreRelationList(SkuStoreRelationRespVO pageReqVO);

    /**
     * 创建sku与适用门店关系
     * @param: skuStoreRelationSaveVO
     * @return: void
     * @author xulimin
     * @date: 2023/12/28 10:11
     */
    void createStoreSkuStoreRelation(SkuStoreRelationSaveVO skuStoreRelationSaveVO);

    /**
     * 跟新sku与适用门店关系
     * @param: skuStoreRelationSaveVO
     * @return: void
     * @author xulimin
     * @date: 2023/12/28 10:11
     */
    void updateStoreSkuStoreRelation(SkuStoreRelationSaveVO skuStoreRelationSaveVO);
}